package h1.sismetro.dao;

import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;

import h1.sismetro.classesbasicas.Manutencao;
/**
 * classe que contem todos os metodos e atributos responsaveis por
 * inserir, alterar, consultar e deletar registros da tabela manutencao
 * @author Paulo
 * @version 1.0
 */
public class RepositorioManutencao implements IRepositorioManutencao {

	private List<Manutencao> manutencoes = new ArrayList<Manutencao>();
	private Iterator<Manutencao> iterator;
	
	public RepositorioManutencao() {
		super();
	}
	
	public RepositorioManutencao(List<Manutencao> manutencoes){
		this.manutencoes = manutencoes;
	}
	
	
	//@Override
	public void atualizar(Manutencao novaManutencao) {
		iterator = manutencoes.iterator();
		while(iterator.hasNext()){
			Manutencao m = iterator.next();
			if(m.getNumero() == novaManutencao.getNumero()){
				remover(m.getNumero());
				inserir(novaManutencao);
				break;
			}
		}
	}

	//@Override
	public void inserir(Manutencao novaManutencao) {
		manutencoes.add(novaManutencao);
	}

	//@Override
	public boolean existe(int numero) {
		iterator = manutencoes.iterator();
		while(iterator.hasNext()){
			if(iterator.next().getNumero() == numero)
				return true;
		}		
		return false;
	}

	//@Override
	public Manutencao localizar(int numero) {
		iterator = manutencoes.iterator();
		while(iterator.hasNext()){
			Manutencao m = iterator.next();
			if(m.getNumero() == numero)
				return m;
		}
		return null;
	}

	//@Override
	public void remover(int numero) {		
		manutencoes.remove(localizar(numero));	
	}

	//@Override
	public List<Manutencao> listar() {		
		return manutencoes;
	}

}
